template<class T>
class auto_ptr
{
public:
	auto_ptr(T* ptr)
		:_ptr(ptr)
	{ }
 
	auto_ptr(auto_ptr<T>& date)
	{
		_ptr = date._ptr;
		date._ptr = nullptr;
	}
 
	~auto_ptr()
	{
		delete _ptr;
		_ptr = nullptr;
	}
 
	T* operator->()
	{
		return _ptr;
	}
 
	T& operator*()
	{
		return *_ptr;
	}
 
private:
	T* _ptr = nullptr;
};
